23

» WarCraft 3 / Интерфейс Варкрафт

Похожие вопросы:

ответ
Ну в общем, я переустановил и лаги пропали, но хрен знает. Гарены у меня нет, вроде. Я ей точно не пользуюсь по крайней мере.
ответ
Cimatic mode - убирает все элементы интерфейса, ну а там уже делай что хочешь когда зашипишишь фрапсом видео.
ответ
pro100master:
Меню "Дополнительно -> Игровой интерфейс" и там найдете
Чуть дополню:
  1. Это цвет шкалы опыта.
  2. Сама рама.
ответ
~8gabriel8:
ПРАВИЛА ЗАПРЕЩАЮТ НЕСКОЛЬКО ВОПРОСОВ ОДНОВРЕМЕННО!!!
Это для того сделано, чтобы бот на каждый вопрос мог показать уже решённые варианты, если сформулирован вопрос нормально, конечно. А ещё это позволит другим пользователям с аналогичными вопросами увидеть ответы на твои.
1. Можно в РО отключить урон юниту и триггерами просчитывать, кто находится перед ним в момент атаки, им будет наноситься урон.
1.5. Не понимаю проблемы, с чего это ты переключаешься на муху, атакуя огромного лорда склепа?
2. Способность Каменные доспехи Ночных Эльфов.
3. И да, и нет. Стандартными средствами сможешь убрать карту через перерисовку интерфейса, разработать и добавить новые кнопки в пул из 12, но для расширения пула или инвентаря потребуются хитрые системы, типа мемхака или DGUI, но не пользовался ими, потому не подскажу, как именно там надо действовать.
4. Можно либо отлавливать урон и прибавлять здоровье, либо делать морф в неуронящего юнита.
5. Не знаю, как именно сделано в Blade of Darkness, но есть событие на нажатие кнопок со стрелками, есть действие на переключение камеры. Просто почитай статью о работе с камерой.
6. У камеры в свойствах есть угол обзора, первую камеру ставишь вниз с углом обзора вверх, что можешь увидеть, поставив галочку в свойствах камеры, вторую камеру поднимаешь вверх и наклоняешь вниз, а в триггере ставишь применить первую камеру в течении 0 секунд, ждать 2 секунды, применить вторую камеру в течении 5 секунд, так обзор будет подниматься в положение второй камеры, ждать 5 секунд.

23

» WarCraft 3 / Как добавить скрин?

Похожие вопросы:

ответ
LongbowMan, могу предложить лишь попробовать пересвязать вершины с костью либо создать несколько костей и попривязывать часть вершин к одной, часть к другой, часть к третьей и т. д. Если не поможет, удали сбояющую аниму и создай заново.
Хотя и это может не помочь, ибо модель действительно очень тяжелая.
ответ
скрин моих файлов
у тебя похоже пропали все j файлы
закинь их в эту папку и перезапусти редактор
ответ
Нажми, как показано на скриншоте, и там будет "нестандартный код"
ответ
вот стандартный набор функций мили игры в триггере инициализации:
    call MeleeStartingVisibility(  )
    call MeleeStartingHeroLimit(  )
    call MeleeGrantHeroItems(  )
    call MeleeStartingResources(  )
    call MeleeClearExcessUnits(  )
    call MeleeStartingUnits(  )
    call MeleeStartingAI(  )
    call MeleeInitVictoryDefeat(  )
По названиям функций думаю понятно что они делают, рассмотрим по подробнее MeleeInitVictoryDefea( )
function MeleeInitVictoryDefeat takes nothing returns nothing
    local trigger    trig
    local integer    index
    local player     indexPlayer

    // Create a timer window for the "finish soon" timeout period, it has no timer
    // because it is driven by real time (outside of the game state to avoid desyncs)
    set bj_finishSoonTimerDialog = CreateTimerDialog(null)

    // Set a trigger to fire when we receive a "finish soon" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_SOON)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishSoon)

    // Set a trigger to fire when we receive a "finish now" game event
    set trig = CreateTrigger()
    call TriggerRegisterGameEvent(trig, EVENT_GAME_TOURNAMENT_FINISH_NOW)
    call TriggerAddAction(trig, function MeleeTriggerTournamentFinishNow)

    // Set up each player's mortality code.
    set index = 0
    loop
        set indexPlayer = Player(index)

        // Make sure this player slot is playing.
        if (GetPlayerSlotState(indexPlayer) == PLAYER_SLOT_STATE_PLAYING) then
            set bj_meleeDefeated[index] = false
            set bj_meleeVictoried[index] = false

            // Create a timer and timer window in case the player is crippled.
            set bj_playerIsCrippled[index] = false
            set bj_playerIsExposed[index] = false
            set bj_crippledTimer[index] = CreateTimer()
            set bj_crippledTimerWindows[index] = CreateTimerDialog(bj_crippledTimer[index])
            call TimerDialogSetTitle(bj_crippledTimerWindows[index], MeleeGetCrippledTimerMessage(indexPlayer))

            // Set a trigger to fire whenever a building is cancelled for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_CANCEL, null)
            call TriggerAddAction(trig, function MeleeTriggerActionConstructCancel)

            // Set a trigger to fire whenever a unit dies for this player.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_DEATH, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitDeath)

            // Set a trigger to fire whenever a unit begins construction for this player
            set trig = CreateTrigger()
            call TriggerRegisterPlayerUnitEvent(trig, indexPlayer, EVENT_PLAYER_UNIT_CONSTRUCT_START, null)
            call TriggerAddAction(trig, function MeleeTriggerActionUnitConstructionStart)

            // Set a trigger to fire whenever this player defeats-out
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_DEFEAT)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerDefeated)

            // Set a trigger to fire whenever this player leaves
            set trig = CreateTrigger()
            call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
            call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)

            // Set a trigger to fire whenever this player changes his/her alliances.
            set trig = CreateTrigger()
            call TriggerRegisterPlayerAllianceChange(trig, indexPlayer, ALLIANCE_PASSIVE)
            call TriggerRegisterPlayerStateEvent(trig, indexPlayer, PLAYER_STATE_ALLIED_VICTORY, EQUAL, 1)
            call TriggerAddAction(trig, function MeleeTriggerActionAllianceChange)
        else
            set bj_meleeDefeated[index] = true
            set bj_meleeVictoried[index] = false

            // Handle leave events for observers
            if (IsPlayerObserver(indexPlayer)) then
                // Set a trigger to fire whenever this player leaves
                set trig = CreateTrigger()
                call TriggerRegisterPlayerEvent(trig, indexPlayer, EVENT_PLAYER_LEAVE)
                call TriggerAddAction(trig, function MeleeTriggerActionPlayerLeft)
            endif
        endif

        set index = index + 1
        exitwhen index == bj_MAX_PLAYERS
    endloop

    // Test for victory / defeat at startup, in case the user has already won / lost.
    // Allow for a short time to pass first, so that the map can finish loading.
    call TimerStart(CreateTimer(), 2.0, false, function MeleeTriggerActionAllianceChange)
endfunction
Вроде много, но тут все просто, создается три триггера один следит за тем сколько построил зданий любой играющий игрок, второй следит сколько зданий погибло у любого играющего игрока, ну а третий следит за теми кто ливнул, чтобы их не преребирать, два прочих вспомогательные, следят за отмненой строительства и прочее.
Итого делаем вывод, чтобы узнать проиграл или нет игрок, нам нужно узнать сколько у него живых зданий, меньше 1 игрок проиграл. А реализовать это можно как угодно, триггерами следящими за смертями и прочим или таймером, который будет переодически считать все здания каждого игрока и давать поражение тем игрокам у кого не осталось ни одного здания...
ответ
Вот тут есть решение.

23

» WarCraft 3 / Эффект грозы

Похожие вопросы:

ответ
~8gabriel8:
Это жесть, что ты сделал) Этот русификатор триггеров уж такую муть содержит, что ты просто какую-то белиберду сотворил. Исправил до рабочего вида, но чтобы совсем красиво было, это не ко мне, а к джассерам. Просто времени мало на всё, а исправление этих триггеров затратило его довольно много.

23

» WarCraft 3 / Название

Похожие вопросы:

ответ
Дополнительно -> Игровой интерфейс
Текст - Общий - Тип
ответ
Багнулся заголовок карты
Если есть hex редактор, то открой и поменяй вручную

Или пробуй пересохранять карту в другом редакторе, если такое возможно

До:
После:

Таким способом можно менять название карты в списке
После строки идет 0x00 типа строка заканчивается
Далее идут байты 7A FC 00 04, тупо выделяешь ctrl+x
Потом в поле ввода символов пишешь что тебе нужно, ищешь в байтах окончание строки 0x00 и после него вставляешь то что ты ранее вырезал
Звучит сложновато - но это очень легко
ответ
На Arctic RPG смахивает, проверьте.
ответ
Steal nerves:
есть нативка, из которой можно получить название
constant native GetObjectName takes integer objectId returns string

23

» WarCraft 3 / Есть ли такое условие?

Похожие вопросы:

ответ
Steal nerves:
bifurcated, все условия истины. Это сделано специально, но глупо. Если бы не было инверсии, то нам бы не удалось узнать бы. Если бы одно из них вернуло истину, то действие оборвало, и мы бы не узнали об том, истинны ли нижние условия. Могли бы сразу написать and, но близзард сделали так из-за гуи. Там каждое условие - отдельная функция, и их как то надо было вместе слепить
как пример, нужно проверить 10 солдат в роте на трезвость, одного проверяем, второго проверяем и так далее. Если попадется один, то дальше нет смысла проверять, так как вся рота будет наказана. Это как со сборной России. Если все норм, значит они чисты
ответ
ApoloZ2, то что нужно?
ответ
Snak061, если возникла необходимость в том что не нужно значит у тебя не правильная архитектура
вывод: меняй архитектуру
ну или иди в другое место и там пытайся строить небоскрёбы из картона
у нас тут используют только проверенные стройматериалы
ответ на твой вопрос - НЕТ
ответ
PT153:
Есть. Условие -> сравнение целочисленной.
Можно скрин например?
решил логично поискать и нашёл.

23

» WarCraft 3 / Краш

Похожие вопросы:

ответ
А что не понятного? Крашится при уничтожении базы красного, значит перелопать код, который отсится к базе или вообще к красному игроку хоть как-то. Что сложного то?
ответ
у мертвого юнита изменился уровень ауры, вот и упало. никогда не меняй уровни способностей у мертвых юнитов, жди их возрождения
Даже вон видно айди ASc4
ответ
Разобрался в чем была проблема. Нашел методом исключения.

23

» WarCraft 3 / StartAbilityCD(integer, real)

Принятый ответ
Похожие вопросы:

ответ
Возможно "канал" так же имеет отличную от остальных абилок структуру
Рабочий вариант
function StartAbilityCD takes unit whichUnit, integer abilityId returns boolean
local integer pAbility = 0
local real cd = GetAbilityCD(abilityId, GetPlayerId(GetOwningPlayer(whichUnit))+1)
if whichUnit == null or GetUnitAbilityLevel( whichUnit, abilityId ) < 1 or cd == 0.00 then
return false
endif

set pAbility = GetUnitAbility(whichUnit, abilityId)
if pAbility < 1 then
return false
else
if RMem(pAbility+0x134)==-1 and RMem(pAbility+0x138)==-1 then
call WMem(pAbility+0x134,0)
call WMem(pAbility+0x138,0)
endif
set Memory[pReserverdIntArg1 / 4] = mR2I(cd)
call CallThisCallWith2Args( pStartAbilityCD, pAbility, pReserverdIntArg1 )
return IsAbilityOnCooldown( pAbility )
endif
return false
endfunction

23

» WarCraft 3 / Редактор кампания - проверка карты

Похожие вопросы:

ответ
Но ведь сами по себе ошибки не происходят.
Причина подобного это А) - невнимательность либо твоя либо автора В) - программное обеспечение
Что бы в дальнейшем все было окей, просто сначала потести карту полностью что бы знать что и как должно быть, а потом вноси изменения, будь внимательней.
Еще советую связаться с автором и поговорить с ним об этой проблеме, или запросить у него еще 1 исходник да бы сверЯться с ним.

23

» WarCraft 3 / модель не работает

Похожие вопросы:

ответ
советую переименовать модель\заребутить комп
текстуры стандартные юзал, я так понимаю
ответ
~8gabriel8:
BattleMaster, укажи имена:
BTNBT
DISBTNBT
Потом в редакторе объектов проверь путь к BT, скорее всего надо будет поменять на BTNBT.
ответ
У модели не выбрано текстурка которая отвечает за ...я забыл как это называется. Аля погребального огня или что-то того. Оказалось трём материалам не дали текстур, я поправил. Сначала проверь работает ли в игре, а потом смело меняй с заменой у себя в папке.

23

» WarCraft 3 / хп и мп бары

Похожие вопросы:

ответ
Простыми способами никак, только хаками. Для начинающих это будет сложно, проще дать классификацию здания и добавить 150000 хп, и тогда хп не не будет видно с маной так же, но у этого способа много изьянов.

23

» WarCraft 3 / Модели

Принятый ответ
Похожие вопросы:

ответ
Поиск по сайту, если не нашлось, сперва сюда:
Потом сюда:

В следующий раз за такие темы будут варны.
ответ
Нет.
ответ
~8gabriel8:
Достаточно низкие настройки?
Увеличил размер с 100х100 до 128х128 и пересчитал границы у модели:
ответ
~8gabriel8:
Смотри карту: xgm.guru/files/100/219921/comments/408338/0.w3x
Там для героев созданы их копии с другой моделью и нестандартные способности на основе способности Тёмный, которая заменяет юнита на указанного другого. Такой вариант не меняет имя героя, порядок предметов в инвентаре, кулдаун на предметах и способностях, но что-то упоминали ранее о возможных глюках с наложенными заклинаниями. Триггерно при использовании способности не на иллюзии героя добавляем ему нестандартную способность нужного типа.
Вариант с заменой юнита, примерно как ты описал, приведёт к сбросу имени, опыта, способностей, кулдаунов, предметов и заклинаний.
Вариантом морфа героя через руны не умею пользоваться.
Вариант с заменой текстуры персонажа через способность Вырвать дерево требует замены текстур деревьев в карте, а это плохо, так как героев много. Ещё это подразумевает умение работать с 3D-редакторами, которого, как предполагаю, у тебя нет.

23

» WarCraft 3 / Заговор Неуязвимости

Похожие вопросы:

ответ
Я припоминаю как сталкивался с таким. Скорее всего это не лечится. Можно попробовать создавать даммика на месте здания и заставлять его использовать заклинание. Или даже полностью самому написать спелл - он довольно прост.
ответ
Если я правильно понял, то у тебя не отображается требуемая анимация на кастующем юните? Если он один и это герой, то ничего не мешает тебе заставить его делать тригерно, а так же вешать и удалять на нём эффект, пока он находится под действием баффа (своего же), ну или какую-нибудь другую, например:
"Боевая единица завершает применение способности"
"Способность = ололо_алала"
"обнуляешь переменную с эффектом"
Китайская система, но должно работать.
ответ
Действие - боевая единица - Пауза.
Ну а также, можно просто заюзать канал, но само действие спела нужно прописывать триггерно.
ответ
Не берите вы эти ульты для основы своих скиллов, они сделаны через одно место лиж бы работали в капмании, а там дальше хоть потоп.
Сделайте заклинание из канала, а юнитов вокруг делайте неуязвимыми.
ответ
XGM Bot:
Похожие вопросы:

ответ
Я припоминаю как сталкивался с таким. Скорее всего это не лечится. Можно попробовать создавать даммика на месте здания и заставлять его использовать заклинание. Или даже полностью самому написать спелл - он довольно прост.
ответ
Не берите вы эти ульты для основы своих скиллов, они сделаны через одно место лиж бы работали в капмании, а там дальше хоть потоп.
Сделайте заклинание из канала, а юнитов вокруг делайте неуязвимыми.


23

» WarCraft 3 / Изменение юнита

Похожие вопросы:

ответ
Установи нужную высоту и измени тип юнита с пешего, на парящий. И установи минимальную высоту, как и сказал Lp666.
Что-то мы все затупили).
ответ
Ну конечно, нужно еще 1000 левелов и чтобы карта загружалась минут 40. Не более 4 уровней, очень желательно либо делайте подгрузку.
ответ
Насколько помню нет, (хотя - невидимые платформы, но это тот еще костыль).
ответ
Сделать свою способность на основе Канала, настроить применение на точку. При событии каста создавать юнитов в точке каста. Все необходимое есть в статьях ( тут и тут).
ответ
~8gabriel8:
Что случилось-то? Одни и те же вопросы по 2-3 раза.
Вот есть программа xgm.guru/p/wc3/map-import-manager

23

» WarCraft 3 / Цель способности

Похожие вопросы:

ответ
Поставь в настройках: Цель - юнит и убрать Изображение указателя цели. Так же нужно нужно радиус действия (кажись так оно называется) поставь на 0.
ответ
Событие EventUnitSummon
GetUnitX\Y от GetSummonedUnit()
ответ
Все получилось. Спасибо всем за помощь)
ответ
чесн, в этом триггере прекрасно все
от точки, которая создается, не используется, но удаляется
пика группы юнитов, которые все суммарно сколько их на карте нанесут бедной цели урон
и до атакованного юнита, которого вообще здесь не может быть)

что по сути, так я хз как можно прозевать "Цель способности", или как оно у вас называется в русифицированных триггерах. на стандартной версии это target of ability being cast
цикл здесь скорее всего не нужен, если конечно только смысл действительно в том что бы брать всех огров на карте и наносить цели урон.
ответ
Extremator, там вроде граффика маг или граффика цель пашут, в доте у тайдхантера пока он был с пассивкой, былл эффект на задетых врагов. Старую опен доту в помощь.

23

» WarCraft 3 / Не могу нормально создать способность...

Похожие вопросы:

ответ
это Q/A
тут разрешены только вопросы
в следующий раз за заявки типа "сделайте мне что либо" пойдут варны
ответ
FabulousTiger, большенству людей сложно влиться в чужой проект если тот абсолютно не отвечает некоторым критериям либо человеку может просто не нравится задумка. И это далеко не та ситуация когда нужно проглотить свое негодование, уровень роботы такого человека будет напрямую зависеть от того насколько ему нравится проект.
KaneThaumaturge, твоя скорость изучения JASS будет напрямую зависеть от того насколько ты в это захочешь втянуться. Правда должен предупредить что есть люди которые просто не приспособлены к тому что-бы понять програмирование в его ярчайшем проявлении, такие люди обычно при разработке проекта опираются на то что умею лучше всего.
Я из опыта скажу что: есть некоторые вещи которые возможно создать только при помощи JASS, но реализацию большенства идей можно выполнить при помощи GUI. Покопайся в чужих наработка пойми что ты хочешь и что можешь использовать из предоставленного тебе и вперед делать проект.

23

» WarCraft 3 / Ошибка.

Похожие вопросы:

ответ
Проблема в Coordinate functions
ответ
Так ты всю либо кинь.
кат
//=====================================================================================================\\
library MainBar initializer InitSetBar

    native UnitAlive takes unit u returns boolean

    globals
        constant real br_updatePeriod = 0.2 //период обновления баров.
        integer array br_indHP //сохраняет текущий индекс модели хпбара,  чтобы сравнить, изменился ли он.
        integer array br_indMP //сохраняет текущий индекс модели мпбара,  чтобы сравнить, изменился ли он.
        integer array br_abilityHP
        integer array br_abilityMP
        integer br_unitCounter = 0
        effect array br_effHP //записывает хпбар, чтобы его можно было удалить и заменить другим.
        effect array br_effMP //записывает хпбар, чтобы его можно было удалить и заменить другим.
        region br_mapArea = null
        unit array br_unit
        boolean array br_unitIntimer
    endglobals
    
    nothing SetBar( ){ 
        integer i = 1
        integer iend = br_unitCounter
        integer indHP
        integer indMP
        loop{
            exitwhen i > iend
            if (UnitAlive(br_unit[i])) {
                indHP = R2I(GetUnitLifePercent(br_unit[i])/5)
                if (br_indHP[i] != indHP)  {
                    UnitRemoveAbility(br_unit[i], br_abilityHP[br_indHP[i]])
                    UnitAddAbility   (br_unit[i],  br_abilityHP[indHP])
                    br_indHP[i] = indHP
                }
                indMP = R2I(GetUnitManaPercent(br_unit[i])/5)
                if (br_indMP[i] != indMP) and (GetUnitState(br_unit[i], UNIT_STATE_MAX_MANA) > 0) {
                    UnitRemoveAbility(br_unit[i], br_abilityMP[br_indMP[i]])
                    UnitAddAbility   (br_unit[i],  br_abilityMP[indMP])
                    br_indMP[i] = indMP
                }
            }
            i++
        }
    }

    nothing TimerStartEx ( timer whichTimer, real period, boolean isPeriodic, code handlerFunc, integer userData ){ 
        TimerStart(whichTimer, I2R(userData), false, null)
        PauseTimer(whichTimer)
        TimerStart(whichTimer, period, isPeriodic, handlerFunc )
    }
 
    integer TimerGetUserData ( timer whichTimer ){ 
        return R2I(TimerGetRemaining(whichTimer )+0.5)
    }

    nothing ClearIDBar () {
        timer t = GetExpiredTimer()
        integer id = TimerGetUserData(t)
        if UnitAlive(br_unit[id]) == false {
            br_unit[id] = br_unit[br_unitCounter]
            br_effHP[id] = br_effHP[br_unitCounter]
            br_effMP[id] = br_effMP[br_unitCounter]
            br_indHP[id] = br_indHP[br_unitCounter]
            br_indMP[id] = br_indMP[br_unitCounter]
            br_unit[br_unitCounter] = null
            br_effHP[br_unitCounter] = null
            br_effMP[br_unitCounter] = null
            br_indHP[br_unitCounter] = 0
            br_indMP[br_unitCounter] = 0
            br_unitCounter = br_unitCounter - 1
        } else
        br_unitInTimer[id] = false
        DestroyTimer(t)
        t = null
    }
    
    nothing ClearRemoteUnits() {
        integer i = 1
        integer iend = br_unitCounter
        loop{
            exitwhen i > iend
            if (br_unit[i] == null) and (br_unitInTimer[i] == false) {
            BJDebugMsg("null " + I2S(i))
            }
            i++
        }
    }

    nothing ClearBarDeath ( ){ 
        integer i = 1
        integer iend = br_unitCounter
        integer id
        loop {
            exitwhen i > iend
            if br_unit[i] == GetTriggerUnit() {
                DestroyEffect(br_effHP[i])
                DestroyEffect(br_effMP[i])
                id = i
            }
            i++
        }
        timer t = CreateTimer()
        br_unitInTimer[id] = true
        TimerStartEx(t, 88, false, function ClearIDBar, id)
        t = null
    }
    
    nothing InitSetBar(){ 
        EnablePreSelect(false, false) //скрывает полоски здоровья и информацию при наведении на юнита.
        br_abilityHP[0] = 'HP00'
        br_abilityHP[1] = 'HP01'
        br_abilityHP[2] = 'HP02'
        br_abilityHP[3] = 'HP03'
        br_abilityHP[4] = 'HP04'
        br_abilityHP[5] = 'HP05'
        br_abilityHP[6] = 'HP06'
        br_abilityHP[7] = 'HP07'
        br_abilityHP[8] = 'HP08'
        br_abilityHP[9] = 'HP09'
        br_abilityHP[10] = 'HP10'
        br_abilityHP[11] = 'HP10'
        br_abilityHP[12] = 'HP12'
        br_abilityHP[13] = 'HP13'
        br_abilityHP[14] = 'HP14'
        br_abilityHP[15] = 'HP15'
        br_abilityHP[16] = 'HP16'
        br_abilityHP[17] = 'HP17'
        br_abilityHP[18] = 'HP18'
        br_abilityHP[19] = 'HP19'
        br_abilityHP[20] = 'HP20'
        br_abilityMP[0] = 'MP00'
        br_abilityMP[1] = 'MP01'
        br_abilityMP[2] = 'MP02'
        br_abilityMP[3] = 'MP03'
        br_abilityMP[4] = 'MP04'
        br_abilityMP[5] = 'MP05'
        br_abilityMP[6] = 'MP06'
        br_abilityMP[7] = 'MP07'
        br_abilityMP[8] = 'MP08'
        br_abilityMP[9] = 'MP09'
        br_abilityMP[10] = 'MP10'
        br_abilityMP[11] = 'MP11'
        br_abilityMP[12] = 'MP12'
        br_abilityMP[13] = 'MP13'
        br_abilityMP[14] = 'MP14'
        br_abilityMP[15] = 'MP15'
        br_abilityMP[16] = 'MP16'
        br_abilityMP[17] = 'MP17'
        br_abilityMP[18] = 'MP18'
        br_abilityMP[19] = 'MP19'
        br_abilityMP[20] = 'MP20'
        integer i = 0
        integer iend = 20
        unit u = CreateUnit( Player(0), 'hfoo' , 0, 0, 0)
        loop {
            exitwhen i > iend
            UnitAddAbility(u, br_abilityHP[i])
            UnitAddAbility(u, br_abilityMP[i])
            i++
        }
        KillUnit(u)
        RemoveUnit(u)
        u = null
        TimerStart(CreateTimer(), br_updatePeriod, true, function SetBar )
        TimerStart(CreateTimer(), 30, true, function ClearRemoteUnits)
        trigger trg_br_ClearIDBarDeath = CreateTrigger( )
        TriggerRegisterAnyUnitEventBJ( trg_br_ClearIDBarDeath, EVENT_PLAYER_UNIT_DEATH )
        TriggerAddAction( trg_br_ClearIDBarDeath, function ClearBarDeath )
    } 
 
endlibrary
 //=====================================================================================================\\
Ошибка была в том, что при удалении блока else, удалил только скобки, а else оставил.
ответ
Нужен 139 мдлвис
ответ
это разные функции, локалку сделали в одной, а в другой ее записываете. это как если бы вы поставили дома у себя холодильник, потом пришли к соседу и ищете свой холодильник что бы положить туда яйца
используйте глобалки

23

» WarCraft 3 / Фильтры

Похожие вопросы:

ответ
~8gabriel8:
Если в blp сохранял через BLP Laboratory, то там надо при сохранении поставить «оставлять альфа-канал без изменений».
ответ
PT153:
Попробуй вообще убрать SetDayNightModels в main.
так не пойдет
8gabriel8:
Потому что несуществующая модель и невидимая вроде по-разному обрабатываются.
одинаково

короче, нашел решение проблемы
проблема в том, что в варкрафте кое какие криворукие программисты забабахали офигенную логику освещения , из-за которых фильтры оверлея берут за основу освещение в точке x=0. y=0. z=0. карты, если там нет освещения значит фильтр думает что и он тоже должен без освещения, решение данной проблемы является расположение модели с источником освещения по координатам в точном центре карты (включая z) и виженом для игрока в данной точке
оригинал темы с решением проблемы, а так же тест карта с моделью освещения по ссылке
ответ
Невозможно, можно наложить 50% прозрачности на серый цвет - но это не сделает их бесцветными, нужно редактировать модели.

23

» WarCraft 3 / Возможные способности для героя

Похожие вопросы:

ответ
Есть специальный ресурс , в котором ты можешь заказать способность , которую не можешь сделать сам.
ответ
Ну собственно это такая способность 'Aspb' - книга заклинаний, способность одноименного предмета...
Собственно способность 'Aspb' -spellbook имеет поле 'Ability List' как у юнитов, в котором можно указывать другие способности.
Что нам нужно:
  1. Скопировать способность 'Aspb' - книга заклианий и изменить название на желаемое, удалить иконку и обнулить все параметры ( мин и макс заклинаний ставим на 1, список способностей - тут очищаем весь список и добавлем туда интересующую вас способность, в вашем случае баш...)
  2. Нужно запретить эту способность для изучения игроком триггерно, с помощью SetPlayerAbilityAvalible (в гуях не помню как, там в разделе игрок есть эта функция)
  3. Собствнно добавлем\удаляем нашу способность на основе "спеллбука" когда захотим, она не будет отображаться и занимать место на карте команд.
Примечание:
Запрещенные способности загружаются в память в полном обьеме, не смотря на то что их не видит игрок, поэтому удаляйте все описания, эффекты, иконки, параметры которые отвечают за визуализацию, так вы увеличите скорость загрузки вашей карты, хоть и не намного.
ответ
Steal nerves:
Если на триггерах только, я знаю только на jass:
xgm.guru/p/wc3/179127 простое движение
внизу ссылки на темы, где обсуждают ошибки. Там решение даны, подправить надо самим
xgm.guru/forum/showthread.php?t=53841 отталкивание посложнее
xgm.guru/forum/showthread.php?t=45368 отталкивание
ответ
Все должно действовать, постоянно именно так и делаю. Триггер в студию.
P. S. Только одна оговорка: на всякий случай будет лучше, если способность, даваемая даммику, заранее будет присутствовать у какого-нибудь юнита на карте (можно нейтрального и/или не способного её скастануть), иначе иногда не исключены ситуации, когда даммик просто не кастует добавленную ему способность вообще (зависимость определить не удалось, абсолютно в одной и той же уже сохраненной и оптимизированной карте может кастовать, а может не кастовать - если не стал кастовать эту абилу в первый раз, то и всю игру - т. е. весь конкретный запуск конкретно этой карты - уже не станет, но добавлением абилы заранее нейтральному зданию, т. е. прелоадом, лечится надёжно).
ответ
атачим равкод способности к юниту
способов атача дофига
подробнее в гугле

23

» WarCraft 3 / По поводу импорта текстур.

Похожие вопросы:

ответ
~8gabriel8:
Идея!
В модели один слой, а можно выделить ветви и на новый слой их, а там уже можешь делать смещение без коверкания наложения текстуры.
Что-то с моделью этой, не получается провернуть указанную операцию, постоянно вылетает ошибка.

23

» WarCraft 3 / Перенос героя

Похожие вопросы:

ответ
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду.
Кампания - это пак карт.
ответ
Кампании близов открываем и зырим, мне кажется или на каждой странице с вопросами есть такой вопрос?
ответ
Карты в студию.
ответ
~8gabriel8:
Horfey, во-первых, как верно предположил biridius, проблема в несовпадении равкодов. Чтобы увидеть равкоды в Редакторе объектов, нужно нажать Ctrl+D. Равкоды нестандартных данных обычно представляют букву и три цифры в самом начале названия объекта. Чтобы обойти проблему с ними, нужно либо создавать объекты в Редакторе кампаний, что на вкладке Нестандартные данные, либо редактировать стандартных юнитов.
Во-вторых, в кэше сохраняется много лишнего, а потом ещё неправильно загружается. Например, сохраняется smarts2, а загружается smarts. Как предполагаю, сохранение атрибутов героя необходимо при наличии в главе книг силы/ловкости/интеллекта, но в главе их нет, то есть и сохранять их не требуется, так как атрибуты примут свои значения в соответствии с опытом героя. По-хорошему, должно было быть так:
  • Крестьянин берёт лук или молот и становится бойцом, которому назначается переменная Daran;
  • Боец уничтожает тёмную башню и сохраняется в кэш, как Daran в категории Hero;
  • На следующей карте из кэша восстанавливается Daran из Hero, которому присваивается переменная Daran. Этот герой будет иметь опыт, способности и предметы из предыдущей главы, если они будут иметь правильные равкоды и там, и там.
В-третьих, чтобы игрок мог читать субтитры, если они у него в настройках отключены, есть действие Спецэффекты - Subtitle Display Override.
P. S. Сначала думал просто копировать из редактора объектов одной карты героев с их равкодами в другую, но их равкоды были заняты, потому копируемым юнитам назначался другой равкод. В таком случае мне бы потребовалось менять на карте персонажей на таких же, но с иным равкодом, а это потребовало бы досконального изучения триггеров ради корректной их работы, чего делать как-то не особо охота.
ответ
Варианты есть, но это будет сложновато. Стандартный gamecache не сохраняется на диск игрока в мультиплеере, тут нужны системы вроде datamanager, а так же почитать статьи про GetLocalPlayer() и о синхронизации данных:
GetLocalPlayer
Синхронизация
Еще вопросы?

23

» Администрация XGM / Ресурс

Похожие вопросы:

ответ
Если при поиске ресурсов к адресной строке добавить
?sortfield=datelineasc
то порядок показа по дате будет "от старых к новым"
остальные фильтры пока недоступны
Пример: xgm.guru/p/wc3/resources?sortfield=datelineasc
ответ
Привет. Воспользуйся функцией "Написать менеджеру" или кнопку [!] или обратись напрямую к любому админу или менеджеру и перечисли что хочешь удалить.
Если необходимо удалить проект - обращайся напрямую к админу. Менеджеры не могут удалять проекты которые уже прошли публикацию. Если необходимо удалить ресурс - достаточно обратиться к менеджеру.
А если аккаунт - к Богу
Пункты выдал ошибочно. Вскоре они будут сняты.
ответ
Да, создаёшь проект, а внутри него создаёшь уже ресурсы.
ответ
Исправлено
ответ
Проект проходит стадию проверки

23

» WarCraft 3 / Не работает триггер.

Похожие вопросы:

ответ
Steal nerves:
  1. посмотри в РО у абилок прописаны приказы
  2. попробуй выводить на экран (см. внизу ссылку). Тыкни этой абилкой на юнита и проверь
  3. поищи в текстовике cj_order.j (находится в архиве игры). Кстати можно этот текстовик на сайте найти, Скорп 1000 выставлял
  4. поищи на сайте, такой вопрос был. Кому-то я на такой вопрос отвечал
ратуша самой себе может продавать? попробуй настроить способность, и потыкает на себя пусть. Мб нельзя
ответ
Ради прикола поставь ожидание. Wait на 2 сек. Должно сработать.
ответ
ScopteRectuS, Я решил проблему там баг, если указать регион как точку назначения портала, то с ним триггеры перестают работать. Я просто указал другой регион.
biridius, Ну это альфа версия, за 5 мин сделал, знаю об утечках.
ответ
Ты в условиях установил каждое здание в итоге выходит так что чтобы тригер сработал нужно завершить улучшение во всех этих зданиях сделай для каждого по отдельности либо через если/тогда/иначе.
ответ
А группы в массиве CreepsGroup созданы? Нужно либо создавать группы при инициализации, проходясь циклом по массиву, либо в константах указать "размер" массива, и тогда они будут сами созданы. То есть нужно 12 групп -- ставишь размер 12, группы будут созданы в ячейках с 0 по 11.

23

» WarCraft 3 / Правка урона

Похожие вопросы:

ответ
8gabriel8
я переписал всё на jass - вроде работает как надо
MUI как побочный эффект от хештаблицы и таймера
проверь как работает, а то я сутками не спал
Я там если что поменял Set Life на UnitDamageTarget, чтобы золото капало с убитых гноллов
И если нужно будет поменять способность на другую - то просто в константе passiveAbility поменять равкод
и ещё я там расставил комментарии где можно редактировать волны